import logging

from flask import current_app
from flask import session
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand

from info import create_app, db, models

# 通过指定的配置名字创建对应配置的app
# create_app 就类似于工厂方法
from info.models import User

app = create_app('development')

manager = Manager(app)
# 将 app 与 db 关联
Migrate(app, db)
# 将迁移命令添加到manager中
manager.add_command('db', MigrateCommand)


# 当我们的项目上线后,我们是不可能让你用sql语句把后台管理员添加到数据库中的,难道你让用户去写sql语句？
# 所以我们要开发出一个功能可以让客户最便捷地添加后台管理员,所以想要让客户在服务器上用终端添加后台管理员,
# 只能用flask_script扩展来完成这个功能
@manager.option('-n', '-name', dest="name")
@manager.option('-p', '-password', dest="password")
def createsuperuser(name, password):

    if not all([name, password]):
        print("参数不足")

    user = User()
    user.nick_name = name
    user.mobile = name
    user.password = password
    user.is_admin = True

    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
    print("添加成功")


@app.route('/')
def index():
    # session["name"] = "itheima"

    # 测试打印日志
    # logging.debug('测试debug')
    # logging.warning('测试warning')
    # logging.error('测试error')
    # logging.fatal('测试fatal')

    # current_app.logger.error("测试error")
    return 'index'

if __name__ == '__main__':
    # print(app.url_map)
    manager.run()